Hot 100
哈希
题目 | 思路 |
---|---|
1. 两数之和 - 力扣(LeetCode) | 过去的数存在哈希表中 |
49. 字母异位词分组 | 优化哈希的键为 []int |
128. 最长连续序列 | 上一个不存在于哈希表 |
双指针
题目 | 思路 |
---|---|
283. 移动零 | 一个指针找最新的数,一个指针找 0 的左边 |
42. 接雨水 - 力扣(LeetCode) | 双指针+双 Max,哪边小移哪边,leftMax-height[left] |
11. 盛最多水的容器 | 哪边矮,移动哪边的指针 |
15. 三数之和 - 力扣(LeetCode) | 先排序,之后跳过 |
滑动窗口
普通数组
题目 | 思路 |
---|---|
53. 最大子数组和 - 力扣(LeetCode) | |
56. 合并区间 - 力扣(LeetCode) | 先按照左区间排序,再从左往右检查。需要注意 Go 语言中支持 Lambda 函数的排序方法是:slices.SortFunc(items, func(a, b []int) int { return a[0] - b[0]; }) |
189. 轮转数组 - 力扣(LeetCode) | 三次翻转,第二种做法很复杂没看 |
238. 除自身以外数组的乘积 | 两个指针从一头到另一头,左边的乘积和右边的乘积,先计算结果,之后再乘上自己,从而忽略自身。 |
矩阵
题目 | 思路 |
---|---|
54. 螺旋矩阵 - 力扣(LeetCode) | 模拟,记得在循环中间判断 left == right or top == bottom 然后退出 |
73. 矩阵置零 - 力扣(LeetCode) | 这点空间复杂度真的有必要么?内存现在不缺了 |
链表
题目 | 思路 |
---|---|
160. 相交链表 | |
234. 回文链表 | 反转一半的链表 |
142. 环形链表 II | 先快慢指针,再让一个新指针从起点出发,直至和 slow 相遇。 |
19. 删除链表的倒数第 N 个结点 | first 先走 n 个节点,设置 dummy 节点便于边界条件 |
回溯
题目 | 思路 |
---|---|
79. 单词搜索 - 力扣(LeetCode) | 用 check(i, j, k) 表示在[i,j] 处出发能否找到 word[k:] 的剩余部分,并标记 visited 数组。优化可以从单词数量、 |
技巧
题目 | 思路 |
---|---|
169. 多数元素 - 力扣(LeetCode) | 排序后,取 1/2 的位置的元素 |